package com.lxx.jmb2c.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

/**
 * JWT(JSON Web Token)配置类
 * 
 * 这个类用于配置JWT相关的参数，通过application.yml/properties文件注入
 * 
 * JWT是一种用于身份验证的开放标准(RFC 7519)，由三部分组成：
 * 1. Header(头部)
 * 2. Payload(负载)
 * 3. Signature(签名)
 * 
 * 安全注意事项：
 * - key应该保持机密，不要硬编码在代码中
 * - ttl(过期时间)应根据业务需求合理设置
 * - 生产环境应该使用足够复杂的key
 * 
 * 配置示例(application.yml):
 * jwt:
 *   key: "your-256-bit-secret"
 *   ttl: 3600000 # 1小时(毫秒)
 * 
 * 初学者需要了解：
 * - @ConfigurationProperties 表示从配置文件注入属性
 * - prefix = "jwt" 表示配置项前缀为jwt
 * - @Data 是Lombok注解，自动生成getter/setter
 * 
 * @author lxx
 * @since 2025-07-02
 */
@Data
@Configuration
@ConfigurationProperties(prefix = "jwt")
public class JwtConfig {
    /**
     * JWT签名密钥
     * 要求：
     * - 至少256位(32字节)的随机字符串
     * - 应该通过环境变量或配置中心管理
     * - 不要使用简单或常见的字符串
     */
    private String key;

    /**
     * JWT过期时间(毫秒)
     * 常用值：
     * - 3600000: 1小时
     * - 86400000: 1天
     * - 604800000: 1周
     * 
     * 建议：
     * - 根据业务安全性要求设置
     * - 敏感操作应设置较短时间
     */
    private long ttl;
}
